<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libCZI: libCZI::ISubBlockRepository Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" async src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libCZI
   </div>
   <div id="projectbrief">Reading CZI documents made easy</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classlib_c_z_i_1_1_i_sub_block_repository.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classlib_c_z_i_1_1_i_sub_block_repository-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">libCZI::ISubBlockRepository Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Interface for sub-block repository. This interface is used to access the sub-blocks in a CZI-file.  
 <a href="classlib_c_z_i_1_1_i_sub_block_repository.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="lib_c_z_i_8h_source.html">libCZI.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for libCZI::ISubBlockRepository:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classlib_c_z_i_1_1_i_sub_block_repository.png" usemap="#libCZI::ISubBlockRepository_map" alt=""/>
  <map id="libCZI::ISubBlockRepository_map" name="libCZI::ISubBlockRepository_map">
<area href="classlib_c_z_i_1_1_i_c_z_i_reader.html" title="This interface is used to represent the CZI-file. " alt="libCZI::ICZIReader" shape="rect" coords="0,56,168,80"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a986ec9360cafdbadafdea9b8b5528ac3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_sub_block_repository.html#a986ec9360cafdbadafdea9b8b5528ac3">EnumerateSubBlocks</a> (std::function&lt; bool(int index, const <a class="el" href="structlib_c_z_i_1_1_sub_block_info.html">SubBlockInfo</a> &amp;info)&gt; funcEnum)=0</td></tr>
<tr class="separator:a986ec9360cafdbadafdea9b8b5528ac3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf5c6fe4c21dde7079ac9c5aa04a760f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_sub_block_repository.html#abf5c6fe4c21dde7079ac9c5aa04a760f">EnumSubset</a> (const <a class="el" href="classlib_c_z_i_1_1_i_dim_coordinate.html">IDimCoordinate</a> *planeCoordinate, const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">IntRect</a> *roi, bool onlyLayer0, std::function&lt; bool(int index, const <a class="el" href="structlib_c_z_i_1_1_sub_block_info.html">SubBlockInfo</a> &amp;info)&gt; funcEnum)=0</td></tr>
<tr class="separator:abf5c6fe4c21dde7079ac9c5aa04a760f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd2d9c375554492cf499c97ae49aa50b"><td class="memItemLeft" align="right" valign="top">virtual std::shared_ptr&lt; <a class="el" href="classlib_c_z_i_1_1_i_sub_block.html">ISubBlock</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_sub_block_repository.html#afd2d9c375554492cf499c97ae49aa50b">ReadSubBlock</a> (int index)=0</td></tr>
<tr class="separator:afd2d9c375554492cf499c97ae49aa50b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae557269ff1dcc03bacc21610b17d2104"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_sub_block_repository.html#ae557269ff1dcc03bacc21610b17d2104">TryGetSubBlockInfoOfArbitrarySubBlockInChannel</a> (int channelIndex, <a class="el" href="structlib_c_z_i_1_1_sub_block_info.html">SubBlockInfo</a> &amp;info)=0</td></tr>
<tr class="separator:ae557269ff1dcc03bacc21610b17d2104"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e44c1a929a27036ef77195d516dd719"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structlib_c_z_i_1_1_sub_block_statistics.html">SubBlockStatistics</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_sub_block_repository.html#a6e44c1a929a27036ef77195d516dd719">GetStatistics</a> ()=0</td></tr>
<tr class="separator:a6e44c1a929a27036ef77195d516dd719"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2ce65ddad39daae9ec51ea17f6fbbcf"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structlib_c_z_i_1_1_pyramid_statistics.html">PyramidStatistics</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_sub_block_repository.html#ab2ce65ddad39daae9ec51ea17f6fbbcf">GetPyramidStatistics</a> ()=0</td></tr>
<tr class="separator:ab2ce65ddad39daae9ec51ea17f6fbbcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Interface for sub-block repository. This interface is used to access the sub-blocks in a CZI-file. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a986ec9360cafdbadafdea9b8b5528ac3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a986ec9360cafdbadafdea9b8b5528ac3">&#9670;&nbsp;</a></span>EnumerateSubBlocks()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void libCZI::ISubBlockRepository::EnumerateSubBlocks </td>
          <td>(</td>
          <td class="paramtype">std::function&lt; bool(int index, const <a class="el" href="structlib_c_z_i_1_1_sub_block_info.html">SubBlockInfo</a> &amp;info)&gt;&#160;</td>
          <td class="paramname"><em>funcEnum</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Enumerate all sub-blocks. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">funcEnum</td><td>The functor which will be called for every sub-block. If the return value of the functor is true, the enumeration is continued, otherwise it is stopped. The first argument is the index of the sub-block and the second is providing information about the sub-block. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="abf5c6fe4c21dde7079ac9c5aa04a760f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf5c6fe4c21dde7079ac9c5aa04a760f">&#9670;&nbsp;</a></span>EnumSubset()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void libCZI::ISubBlockRepository::EnumSubset </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classlib_c_z_i_1_1_i_dim_coordinate.html">IDimCoordinate</a> *&#160;</td>
          <td class="paramname"><em>planeCoordinate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">IntRect</a> *&#160;</td>
          <td class="paramname"><em>roi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>onlyLayer0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::function&lt; bool(int index, const <a class="el" href="structlib_c_z_i_1_1_sub_block_info.html">SubBlockInfo</a> &amp;info)&gt;&#160;</td>
          <td class="paramname"><em>funcEnum</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Enumerate the subset of sub-blocks defined by the parameters. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">planeCoordinate</td><td>The plane coordinate. Only sub-blocks on this plane will be considered. </td></tr>
    <tr><td class="paramname">roi</td><td>The ROI - only sub-blocks which intersects with this ROI will be considered. </td></tr>
    <tr><td class="paramname">onlyLayer0</td><td>If true, then only sub-blocks on pyramid-layer 0 will be considered. </td></tr>
    <tr><td class="paramname">funcEnum</td><td>The functor which will be called for every sub-block. If the return value of the functor is true, the enumeration is continued, otherwise it is stopped. The first argument is the index of the sub-block and the second is providing information about the sub-block. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ab2ce65ddad39daae9ec51ea17f6fbbcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2ce65ddad39daae9ec51ea17f6fbbcf">&#9670;&nbsp;</a></span>GetPyramidStatistics()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="structlib_c_z_i_1_1_pyramid_statistics.html">PyramidStatistics</a> libCZI::ISubBlockRepository::GetPyramidStatistics </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Gets the statistics about the pyramid-layers. This information is constructed from all T, Z, C, ... Pyramids are constructed per scene in CZI.</p>
<dl class="section return"><dt>Returns</dt><dd>The pyramid statistics. </dd></dl>

</div>
</div>
<a id="a6e44c1a929a27036ef77195d516dd719"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e44c1a929a27036ef77195d516dd719">&#9670;&nbsp;</a></span>GetStatistics()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="structlib_c_z_i_1_1_sub_block_statistics.html">SubBlockStatistics</a> libCZI::ISubBlockRepository::GetStatistics </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Gets the statistics about the sub-blocks (determined from examining all sub-blocks). </p><dl class="section return"><dt>Returns</dt><dd>The sub-block statistics. </dd></dl>

</div>
</div>
<a id="afd2d9c375554492cf499c97ae49aa50b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd2d9c375554492cf499c97ae49aa50b">&#9670;&nbsp;</a></span>ReadSubBlock()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::shared_ptr&lt;<a class="el" href="classlib_c_z_i_1_1_i_sub_block.html">ISubBlock</a>&gt; libCZI::ISubBlockRepository::ReadSubBlock </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Reads the sub-block identified by the specified index. If there is no sub-block present (for the specified index) then an empty shared_ptr is returned. If a different kind of problem occurs (e. g. I/O error or corrupted data) an exception is thrown. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">index</td><td>Index of the sub-block (as reported by the Enumerate-methods). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If successful, the sub-block object; otherwise an empty shared_ptr. </dd></dl>

</div>
</div>
<a id="ae557269ff1dcc03bacc21610b17d2104"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae557269ff1dcc03bacc21610b17d2104">&#9670;&nbsp;</a></span>TryGetSubBlockInfoOfArbitrarySubBlockInChannel()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool libCZI::ISubBlockRepository::TryGetSubBlockInfoOfArbitrarySubBlockInChannel </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>channelIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structlib_c_z_i_1_1_sub_block_info.html">SubBlockInfo</a> &amp;&#160;</td>
          <td class="paramname"><em>info</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Attempts to get subblock information of an arbitrary subblock in of the specified channel. The purpose is that it is quite often necessary to determine the pixeltype of a channel - and if we do not want to/cannot rely on metadata for determining this, then the obvious way is to look at an (arbitrary) subblock. In order to allow the repository to have this information available fast (i. e. cached) we introduce a specific method for this purpose. A cornerstone case is when no subblock has a channel-index - the rule is: if no subblock has channel- information, then a channelIndex of 0 fits. Otherwise a subblock is a match if the channel- index is an exact match. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">channelIndex</td><td>The channel index. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">info</td><td>The sub-block information (will be set only if the method is successful). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if it succeeds, false if it fails. </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>libCZI/<a class="el" href="lib_c_z_i_8h_source.html">libCZI.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacelib_c_z_i.html">libCZI</a></li><li class="navelem"><a class="el" href="classlib_c_z_i_1_1_i_sub_block_repository.html">ISubBlockRepository</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  </ul>
</div>
</body>
</html>
